// 根据入口的 entry 属性获取操作的工作空间的配置；
const fs = require("fs");
const path = require("path");

function getProcessArgvCommon(entryReg, defaultEntry) {
  process.argv.some(item =>
    entryReg.test(item) && (defaultEntry = item.replace(entryReg, ""))
  );
  return defaultEntry;
}

function getProcessArgv(entryReg) {
  return function (argvEntry) {
    return getProcessArgvCommon(entryReg, argvEntry);
  }
}
const entryPath = path.join(__dirname, "./entryJson.json");
let entryConfig;
try {
  entryConfig = require(entryPath);
} catch (e) {
  entryConfig = {};
}

const entry = getProcessArgv(/--entry-/)();
const confList = fs.readdirSync(path.join(__dirname, "../bizConfs"));
// 重写入口文件的入口为当前传入参数的入口
if (entry) {
  entryConfig.entry = entry;
  fs.writeFileSync(entryPath, JSON.stringify(entryConfig))
}
// 读取目录下下的配置，然后组成map // 转成map 的目的是为了方便 参数中的entry
const outputEntryMap = {};
confList.forEach(item => {
  outputEntryMap[item] = `./${item}/conf.js`;
});
console.log(path.join(__dirname, "../bizConfs", outputEntryMap[entryConfig.entry]))
// 参数中的entry 优先级高于entryJson中的 // 同时 参数中的entry 将会修改entryJson的entry；
const config = require(path.join(__dirname, "../bizConfs", outputEntryMap[entryConfig.entry]));
config.curEntry = entryConfig.entry;
module.exports = config;
